package cn.neo.hhrpc.core.api;

import java.util.List;

/**
 * 负载均衡
 * 有些框架为将router放在loadbalancer中，感觉不妥，违反了单一职责原则。
 * 负载均衡：随机、轮训、权重、自适应(AAWR)
 *  比如：从router获取的集合中，通过某种算法选取其中一个
 */
public interface LoadBalancer<T> {

    T choose(List<T> providers);

    LoadBalancer Default = providers -> (providers == null || providers.size() == 0) ? null : providers.get(0);

}
